package com.centriole.servicepaasuser.service;

import com.centriole.common.entity.PaasApp;
import com.centriole.common.entity.PaasService;
import com.centriole.common.entity.PaasUser;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 *  功   能： PaasUseService 内部用户管理Service接口
 *               【统一管理了 用户数据、应用数据、服务数据】
 *  创建人：陈默晗
 *  时   间：2018年4月11日上午10:11:51
 */

public interface PaasUserService {

    /**
     * 添加用户
     * @param paasUser  PaasUser对象
     * @return  true表示添加成功； false表示添加失败
     */
    boolean addPaasUser(PaasUser paasUser);

    /**
     * 添加服务
     * @param paasService   paasService对象
     * @return true表示添加成功； false表示添加失败
     */
    boolean addPaasService(PaasService paasService);

    /**
     * 添加应用
     * @param paasApp   paasApp对象
     * @return true表示添加成功； false表示添加失败
     */
    boolean addPaasApp(PaasApp paasApp);

    /**
     * 修改用户信息
     * @param paasUser  paasUser对象
     * @return true表示修改成功； false表示修改失败
     */
    boolean modifyPaasUser(PaasUser paasUser);

    /**
     * 修改服务信息
     * @param paasService  paasUser对象
     * @return true表示修改成功； false表示修改失败
     */
    boolean modifyPaasService(PaasService paasService);

    /**
     * 修改应用信息
     * @param paasApp  paasApp对象
     * @return true表示修改成功； false表示修改失败
     */
    boolean modifyPaasApp(PaasApp paasApp);

    /**
     * 查询所有用户
     * @return  List< PaasUser >
     */
    List<PaasUser> listAllPaasUsers();

    /**
     * 查询所有服务
     * @return  List< PaasService >
     */
    List<PaasService> listAllPaasServices();

    /**
     * 查询所有应用
     * @return  List< PaasApp >
     */
    List<PaasApp> listAllPaasApps();

    /**
     * 根据accountName(最左匹配原则)模糊查询用户
     * @return  List< PaasApp >
     */
    List<PaasUser> listPaasUsersLikeAccountName(String accountName);

    /**
     * 关联查询所有用户(包含该用户可访问的服务)
     * @return  List< PaasUser >
     */
    List<PaasUser> listRAllPaasUsers();

    /**
     * 关联查询所有服务(包含 可以对其访问的用户))
     * @return  List< PaasUser >
     */
    List<PaasService> listRAllPaasServices();

    /**
     * 给指定用户关联可访问的服务
     * @param userId    指定的userId
     * @param sIds  要关联服务的sId
     * @return  true表示关联成功；false表示关联失败
     */
    boolean relateUserAndService(String userId, String...sIds);


}
